//对象扩展 es6语法
//函数新增特性
//  简洁表示法  属性表达式
//  扩展运算符  object新增方法


{
  // 简洁表示法
  let o=1;
  let k=2;
  //es5 对象表达式
  let es5={
    o:o,
    k:k
  };
  //es6 简洁表达式
  let es6={
    o,
    k
  };
  console.log(es5,es6);

  let es5_method={
    hello:function(){
      console.log('hello');
    }
  };
  let es6_method={
    hello(){
      console.log('hello');
    }
  };
  console.log(es5_method.hello(),es6_method.hello());
}

{
  // 属性表达式
  let a='b';
  // 固定的key值
  let es5_obj={
    a:'c',
    b:'c'
  };
  //key值可以是表达式或者变量 //下面就是属性表达式--根据变量a生成的属性的key
  let es6_obj={
    [a]:'c'
  }

  console.log(es5_obj,es6_obj);

}

{
  // 新增API
  console.log('字符串',Object.is('abc','abc'),'abc'==='abc');        //是否相等
  console.log('数组',Object.is([],[]),[]===[]);                      // false  数组也是引用类型~！

  console.log('拷贝',Object.assign({a:'a'},{b:'b'}));                //拷贝：将b对象拷贝到a对象上~！只是更改引用地址/

  let test={k:123,o:456};
  for(let [key,value] of Object.entries(test)){                     // 在数组那一节已经讲过了~！
    console.log([key,value]);
  }
}

{
  // 扩展运算符  babel的支持也不是很友好~！   【解构赋值】
  // let {a,b,...c}={a:'test',b:'kill',c:'ddd',d:'ccc'};
  // c={
  //   c:'ddd',
  //   d:'ccc'
  // }
}
